//
//  Andon_TUTK.h
//  Andon_TUTK
//
//  Created by 宣佚 on 15/6/7.
//  Copyright (c) 2015年 宣佚. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, ENUM_TUTK_AVERROR_TYPE) {
    TUTK_AV_CLOSE_BY_REMOTE = 1,
    TUTK_AV_TIMEOUT_DISCONNECT,
    TUTK_AV_INVALID_SID,
    TUTK_AV_OTHER_ERROR,
};

#pragma mark - TUTKClientDelegate

@protocol TUTKClientDelegate <NSObject>

/**
 *  TUTK开始连接
 */
-(void)Tutk_StartConnection;

/**
 *  TUTK连接成功
 */
-(void)Tutk_Connected_Success:(int)avIndex;

/**
 *  TUTK连接失败
 *
 *  @param errorMessage 失败原因
 */
-(void)Tutk_Connected_Failure:(NSString *)errorMessage;

/**
 *  TUTK断开连接
 */
-(void)Tutk_DisConnected_Success;

@end

#pragma mark - TUTKClientVideoDelegate

@protocol TUTKClientVideoDelegate <NSObject>

/**
 *  TUTK视频输出开始连接
 */
-(void)Tutk_Video_StartConnection;

/**
 *  TUTK视频输出连接成功
 */
-(void)Tutk_Video_Connected_Success;

/**
 *  TUTK 视频连接出现错误
 *
 *  @param errorMessage 错误原因
 *  @param ErrorType    错误代号
 */
-(void)Tutk_Video_Connected_Failure:(NSString *)errorMessage ErrorType:(ENUM_TUTK_AVERROR_TYPE)ErrorType;

/**
 *  TUTK 视频信息
 *
 *  @param data       数据流
 *  @param length     数据流畅度
 *  @param frameIndex frame 位置
 */
-(void)tutk_onVideoData:(const void *)data andlength:(unsigned int)length andframeindex:(unsigned int)frameIndex;

/**
 *  TUTK视频输出断开成功
 */
-(void)Tutk_Video_DisConnected_Success;

/**
 *  TUTK视频输出断开失败
 */
-(void)Tutk_Video_DisConnected_Failure;

@end

#pragma mark - TUTKClientAudioDelegate

@protocol TUTKClientAudioDelegate <NSObject>

/**
 *  TUTK音频输出开始连接
 */
-(void)Tutk_Audio_StartConnection;

/**
 *  TUTK音频输出连接成功
 */
-(void)Tutk_Audio_Connected_Success;

/**
 *  TUTK 音频连接出现错误
 *
 *  @param errorMessage 错误原因
 *  @param ErrorType    错误代号
 */
-(void)Tutk_Audio_Connected_Failure:(NSString *)errorMessage ErrorType:(ENUM_TUTK_AVERROR_TYPE)ErrorType;

/**
 *  TUTK 音频信息
 *
 *  @param data       数据流
 *  @param length     数据流畅度
 */
-(void)tutk_onAudioData:(const void *)data andlength:(unsigned int)length;

/**
 *  TUTK音频输出断开成功
 */
-(void)Tutk_Audio_DisConnected_Success;

/**
 *  TUTK音频输出断开失败
 */
-(void)Tutk_Audio_DisConnected_Failure;

@end

#pragma mark - interface

@interface Andon_TUTK : NSObject

@property (weak, nonatomic) id <TUTKClientDelegate> delegate;
@property (weak, nonatomic) id <TUTKClientVideoDelegate> vdelegate;
@property (weak, nonatomic) id <TUTKClientAudioDelegate> adelegate;

/**
 *  开始Tutk连接
 *
 *  @param DeviceID 设备ID
 *  @param username 用户名
 *  @param password 密码
 */
- (void)start:(NSString *)DeviceID userName:(NSString *)username passWord:(NSString *)password;

/**
 *  停止TUTK
 */
-(void)stop;

/**
 *  开始视频线程
 *
 *  @param avIndex avIndex
 */
-(void)startVideoQueue:(int)avIndex;

-(void)stopVideoQueue:(int)avIndex;

/**
 *  开始音频线程
 *
 *  @param avIndex avIndex
 */
-(void)startAudioQueue:(int)avIndex;

-(void)stopAudioQueue:(int)avIndex;

@end
